
#ifndef TIJERA_H_
#define TIJERA_H_

#include "Elemento.h"
#include <string>

using namespace std;

class Tijera: public Elemento {

private:

	Elemento* elementoFilo1;
	Elemento* elementoFilo2;
	double posSogaIzqX;
	double posSogaIzqY;
	Elemento* sogaIzqUnida;
	Elemento* sogaDerUnida;
	double posSogaDerX;
	double posSogaDerY;
	bool sogaIzqInicial;
	bool sogaDerInicial;
	bool estaAbierta;

public:
	Tijera(double x, double y, double ancho, double alto, string pathImagen);
	virtual ~Tijera();

	void jointearElemento(b2World* world);
	void rotar(double angulo);
	bool aceptaSoga();
	void eliminarSoga(Elemento* soga);
	void agregarSogaInicial(Elemento* soga);
	void agregarSogaFinal(Elemento* soga);
	void mover(double centroX,double centroY);
	int seSuperpone(Elemento* elemento);
	void eliminarReferencias(list<Elemento*>* elementosCanvas);
	void actualizarValoresFisicos();
	pair<double,double> obtenerPuntoAnclaje();
	void dibujar(double x, double y, double ancho, double alto,SDL_Renderer* renderer);
//	bool esAnimable();
	int haySogaIzqUnida();
	int haySogaDerUnida();
	bool esBasico();
	void activarSogaPosInicial();
	void activarSogaPosFinal();
	bool sogaEnPosInicial();
	bool sogaEnPosFinal();
	void actualizarReferencias();
	pair<Elemento*,Elemento*> obtenerExtremos();
	void setSogaInicial(Elemento*);
	void setSogaFinal(Elemento*);
//	pair<double,double> obtenerPosicionSoga(int);
	void referenciarElementos();
	void cerrarTijera();
	void abrirTijera();
	pair<double,double> getCentroCorte();

	const Elemento* getElementoFilo1() {
		return elementoFilo1;
	}

	void setElementoFilo1(Elemento* elementoFilo1) {
		this->elementoFilo1 = elementoFilo1;
	}

	const Elemento* getElementoFilo2(){
		return elementoFilo2;
	}

	void setElementoFilo2(Elemento* elementoFilo2) {
		this->elementoFilo2 = elementoFilo2;
	}

	bool estaCerrada();
};

#endif /* TIJERA_H_ */
